(You should click this button, you dont need to see the code).

Plots of diagonal basis antibunching g2 versus fine structure splitting.


In [157]:
%pylab inline
from scipy.optimize import curve_fit
from Icarus.Classes.QuantumDot import QuantumDot
from constants import Constants


Welcome to pylab, a matplotlib-based Python environment [backend: module://IPython.zmq.pylab.backend_inline].
For more information, type 'help(pylab)'.

In [203]:
def makeplot(data, data1, crosstau, secondary):
    
    constants = Constants()
    qd = QuantumDot(constants.xtau, constants.xxtau, constants.ptau, constants.FSS, constants.crosstau)
    qd.crosstau = crosstau
    
    fss = np.linspace(-10, 10, 500)*1e-6
    fidelities = [qd.ideal_fidelity_lorentzian(f)[0] for f in fss]
    ghv = qd.ideal_fidelity_lorentzian(f)[1]
    
    fss_dat = data[:,0]
    g2 = data[:, 1]
    
    def func(x, a, b, c):
        return a - np.exp(-(x/b + c))
    popt, pcov = curve_fit(func, fss_dat, g2)
    
    fig, ax = plt.subplots(figsize = (20/1.5 ,9/1.5))
    
    axes = [ax, ax.twinx(), ax.twinx()]
    fig.subplots_adjust(right=0.75)
    
    axes[-1].spines['right'].set_position(('axes',1.))
    axes[-1].set_frame_on(True)
    axes[-1].patch.set_visible(False)
    
    axes[0].plot(fss_dat, g2, 'bo', fss_dat, func(fss_dat, popt[0], popt[1], popt[2]), 'r--', markersize=3)
    axes[1].plot(data1[:,0], data1[:,1], 'r-', fss/1e-6, np.array(fidelities), 'b--')

    axes[0].set_ylim([0., 2.3])
    axes[1].set_ylim([0., 1.])

    axes[0].legend(['Anti bunching $g^{(2)}(\\tau)$', '$f(x) = a - exp( - (\\frac{FSS}{b} + c))$'], fontsize = 14, loc=1)
    axes[1].legend(['Fidelity monte carlo', 'Fidelity theoretical'], fontsize = 14, loc=4)
    
    axes[0].set_ylabel('$g^{(2)}(\\tau)$') ; axes[1].set_ylabel('Fidelity')
    
    axes[0].set_xlabel('Fine structure splitting $(\\mu eV )$', fontsize = 14)
    
    ax.set_xlim([0, 10])
    plt.suptitle('Coherence: '+np.array(ghv).astype('|S3').tostring()+', secondary population probabilty: ' + 
        np.array(secondary).astype('|S4').tostring(), fontsize = 16)
    
    plt.show()
    print 'Fitted params [a, b, c]:', popt.astype('|S4')

No dephasing and no secondary population


In [211]:
makeplot(
    np.loadtxt('out/2013-07-31/auto_g2_v_fss_dephase2.5e10/auto_g2_v_fidelity.txt', delimiter=','),
    np.loadtxt('out/fidelity_vs_fss/xtau1/fss_v_fidelity.txt', delimiter = ','),
    2.5e3,
    0.00000
)


Fitted params [a, b, c]: ['1.53' '0.77' '-0.5']

2.5ns dephasing time and no secondary population


In [212]:
makeplot(
    np.loadtxt('out/2013-07-31/auto_g2_v_fss_dephase2.5/auto_g2_v_fidelity.txt', delimiter=','),
    np.loadtxt('out/fidelity_vs_fss/cross_dephasing2.5ns/fss_v_fidelity.txt', delimiter = ','),
    2.5,
    0.0000
)


Fitted params [a, b, c]: ['1.56' '1.13' '-0.1']

No dephasing and 0.18 secondary population probability

Note: this theoretical fidelity (dashed blue) is without secondary population, so is a good indicator as to how the fidelity decreases, by about 5-10%.


In [206]:
makeplot(
    np.loadtxt('out/2013-07-31/auto_g2_v_fss_dephase2.5e10secondaty0.18/auto_g2_v_fidelity.txt', delimiter=','),
    np.loadtxt('out/fidelity_vs_fss/secondary_emisison_reduction-0.18/fss_v_fidelity.txt', delimiter = ','),
    2.5e10,
    0.18
)


Fitted params [a, b, c]: ['1.55' '0.80' '-0.4']

2.5ns dephasing time and 0.2 secondary population probability

Note: the fidelity graph here does not have any secondary population. This will be added soon.


In [207]:
makeplot(
    np.loadtxt('out/2013-07-31/auto_g2_v_fss_dephase2.5secondaty0.2/auto_g2_v_fidelity.txt', delimiter=','),
    np.loadtxt('out/fidelity_vs_fss/cross_dephasing2.5ns/fss_v_fidelity.txt', delimiter = ','),
    2.5,
    0.2
)


Fitted params [a, b, c]: ['1.54' '1.12' '-0.0']

We are probably somewhere around FSS between 0 and 1. in the last graph, with secondary population and dephasing, here the auto g2 is about 1. Hence the reason we see no antibunching.


In [ ]: